package com.deyuanyun.pic.insp.mapper;


import com.deyuanyun.pic.insp.controller.dto.InspresultByFind;
import com.deyuanyun.pic.insp.domain.DefectMetalLoss;
import com.deyuanyun.pic.pipe.domain.PiggingStructure;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public interface DefectMetalLossMapper {
	int deleteByPrimaryKey(String id);

	int insert(DefectMetalLoss record);

	int insertSelective(DefectMetalLoss record);

	DefectMetalLoss selectByPrimaryKey(String id);

	int updateByPrimaryKeySelective(DefectMetalLoss record);

	int updateByPrimaryKey(DefectMetalLoss record);

	/**
	 * @Description: 根据类型查询总条数
	 * @Author: 荣华兴
	 * @Create Date: 2015年9月24日
	 * @参数：@param featureType
	 * @参数：@return
	 * @Return:int
	 */
	int countMetalLoss(String featureType);

	/**
	 * @Description: 根据选择的检测管段ID查询检测任务
	 * @Author: 荣华兴
	 * @Create Date: 2015年9月28日
	 * @参数：@param taskLineId
	 * @参数：@return
	 * @Return:List
	 */
	List getTaskByTaskLineId(String taskLineId);

	/**
	 * @Description: 根据选择的检测管段ID查询物理管段
	 * @Author: 荣华兴
	 * @Create Date: 2015年9月28日
	 * @参数：@param taskLineId
	 * @参数：@return
	 * @Return:List
	 */
	List getSegmentByTaskLineId(String taskLineId);

	/**
	 * @Description: 根据页面传值，统计各金属损失数
	 * @Author: 荣华兴
	 * @Create Date: 2015年10月7日
	 * @参数：@param iRBF
	 * @参数：@return
	 * @Return:List
	 */
	List MetalLossCount(InspresultByFind iRBF);

	/**
	* @Description: 根据条件查询金属损失总数
	* @Author: 荣华兴
	* @Create Date: 2015年10月7日
	* @参数：@param IRBF
	* @参数：@return
	* @Return:int
	*/
	int allMetalLoss(InspresultByFind iRBF);
    
	/**
   	 * 
   	  * 查询金属损失
   	  * @author 王敏
   	  * @time 2015年10月9日下午4:22:37
   	  * @param  taskId:检测任务ID 
   				taskSegmentId:检测管段ID
   				lineId:管道ID
   				segmentId:管段ID
   				beginMilfage:起点里程
   				endMilfage:终点里程
   				beginLength endLength :缺陷长度
   				beginWidth endWidth: 缺陷宽度
   				beginDepth endDepth:峰值深度
   				beginClock endClock:时钟方位
   				featureType:缺陷类型 
   				featureTypeList:缺陷类型数组
   				otherList:辅助查询数组

   	  * @return   LinkedHashMap<String,Object> 集合
   	  * @see    
   	  *
   	 */
   	public Page<LinkedHashMap<String,Object>> findPage(HashMap param);
       
   	/**
   	 * 
   	  * 查询金属损失 导出列表
   	  * @author 王敏
   	  * @time 2015年10月9日下午4:22:37
   	  * @param  taskId:检测任务ID 
   				taskSegmentId:检测管段ID
   				lineId:管道ID
   				segmentId:管段ID
   				beginMilfage:起点里程
   				endMilfage:终点里程
   				beginLength endLength :缺陷长度
   				beginWidth endWidth: 缺陷宽度
   				beginDepth endDepth:峰值深度
   				beginClock endClock:时钟方位
   				featureType:缺陷类型 
   				featureTypeList:缺陷类型数组
   				otherList:辅助查询数组

   	  * @return   LinkedHashMap<String,Object> 集合
   	  * @see    
   	  *
   	 */
       public Page<LinkedHashMap<String,Object>> findPageExport(HashMap param);
    


    /**
    	* @Description: 根据传入的金属损失类型查其下具体的值
    	* @Author: 荣华兴
    	* @Create Date: 2015年10月10日
    	* @参数：@param iRBF
    	* @参数：@return
    	* @Return:List
     */
	Map findByLossType(InspresultByFind iRBF);
	/**
	 * @Description: 根据类型查询总条数
	 * @Author: 荣华兴
	 * @Create Date: 2015年10月10日
	 * @参数：@param featureType
	 * @参数：@return
	 * @Return:int
	 */
	int MetalLossCountToOne(InspresultByFind iRBF);

	/**
	* @Description: 根据物理管段id获得相对里程
	* @Author: 荣华兴
	* @Create Date: 2015年10月12日
	* @参数：@return
	* @Return:Integer
	*/
	HashMap getMileageByLine(InspresultByFind iRBF);

	/**
		* @Description:统计里程上的损失数量
		* @Author: 荣华兴
		* @Create Date: 2015年10月14日
		* @参数：@param iRBF
		* @参数：@return
		* @Return:List
	 */
	List getCountByMaleage(InspresultByFind iRBF);
	/**
	* @Description:查询具体的金属损失类型对应里程上的数量
	* @Author: 荣华兴
	* @Create Date: 2015年10月14日
	* @参数：@param iRBF
	* @参数：@return
	* @Return:List
 */
	int getMetalLossCountByMaleage(InspresultByFind iRBF);

	/**
		* @Description: 统计每段相对里程上的总体金属损失数
		* @Author: 荣华兴
		* @Create Date: 2015年10月15日
		* @参数：@param iRBF
		* @参数：@return
		* @Return:List
	 */
	int getAllCountByMileage(InspresultByFind iRBF);

	/**
	* @Description: 根据类型查询金属损失的时钟分布数
	* @Create Date: 2015年10月16日
	* @参数：@param IRBF
	* @参数：@return
	* @Return:List
 */
	List findMetalTimMap(InspresultByFind iRBF);

	/**
	* @Description: 根据类型查询金属损失的时钟分布数(修改版)
	* @Create Date: 2015年10月17日
	* @参数：@param IRBF
	* @参数：@return
	* @Return:List
 */
	HashMap getCountBytimap(InspresultByFind iRBF);

	/**
	* @Description: 获取金属损失表中的所有管道、管道、检测任务、检测管道的分组
	* @author h.x.rong
	* @date 2015年12月1日
	* @param @return
	* @return List 
	*
	 */
	List getMetalQueryTerms();

	HashMap findNewsTask();

	public Page<LinkedHashMap<String,Object>> queryExportApprarse(HashMap param);


	HashMap findTaskById(String taskId);
}